package cn.chinaunicom.mini.program.dingtalk.events.model.callback;

import lombok.Getter;
import lombok.Setter;

import java.util.List;

/**
 * 用户信息实体类
 * 用于封装企业微信用户的基本信息、角色权限、部门归属等详细资料。
 */
@Getter
@Setter
public class UserInfoCallbackData {
    /**
     * 错误码，0表示无错误。
     */
    private int errcode;

    /**
     * 企业员工扩展信息
     */
    private UnionEmpExt unionEmpExt;

    /**
     * 唯一标识，用户的unionid。
     */
    private String unionid;

    /**
     * 是否是专属账号。
     */
    private boolean exclusiveAccount;

    /**
     * 用户所在部门及排序信息，格式为JSON字符串。
     */
    private String orderInDepts;

    /**
     * DingTalk ID。
     */
    private String dingId;

    /**
     * 账号是否激活。
     */
    private boolean active;

    /**
     * 错误信息，"ok"表示成功。
     */
    private String errmsg;

    /**
     * 用户头像URL。
     */
    private String avatar;

    /**
     * 是否为管理员。
     */
    private boolean isAdmin;

    /**
     * 用户ID。
     */
    private String userid;

    /**
     * 是否隐藏手机号。
     */
    private boolean isHide;

    /**
     * 工号。
     */
    private String jobnumber;

    /**
     * 是否在各个部门中为领导，格式为JSON字符串。
     */
    private String isLeaderInDepts;

    /**
     * 是否为企业主。
     */
    private boolean isBoss;

    /**
     * 是否为高管。
     */
    private boolean isSenior;

    /**
     * 姓名。
     */
    private String name;

    /**
     * 职位。
     */
    private String position;

    /**
     * 所属部门列表，数组元素为部门ID。
     */
    private List<Integer> department;

    /**
     * 是否实名认证。
     */
    private boolean realAuthed;

    // 内部类定义，用于封装unionEmpExt中的信息
    @Getter
    @Setter
    public static class UnionEmpExt {
        /**
         * 企业ID。
         */
        private String corpId;

        /**
         * 企业员工映射列表。
         */
        private List<UnionEmpMap> unionEmpMapList;

        /**
         * 员工ID。
         */
        private String staffId;

        // 内部类定义，用于封装unionEmpMapList中的信息
        @Getter
        @Setter
        public static class UnionEmpMap {
            /**
             * 企业ID。
             */
            private String corpId;

            /**
             * 员工ID。
             */
            private String staffId;
        }
    }
}
